#ifndef __PVMDRIVER_PULSE_H__
#define __PVMDRIVER_PULSE_H__

#include "lib/drivers/pvmdriver_softmix.h"

class PVMDevicePulse;

class PVMDriverPulse : public IPVMDriverOutSimpleDevice
{
public:
	PVMDriverPulse();
	virtual ~PVMDriverPulse();

	virtual pvm_bool Init();
	virtual void DriverClose();
	virtual pvm_bool IsInitialized();
	virtual pvm_uint32 GetDriverType();

	virtual pvm_bool GetDriverOption(const pvm_char* optionName, void* optionVal, pvm_uint32* optionSize);
	virtual pvm_bool SetDriverOption(const pvm_char* optionName, void* optionVal, pvm_uint32 optionSize);

	virtual pvm_uint32 DevicesNum();
	virtual pvm_int32 DeviceName(pvm_int32 nDevice, pvm_char* buffer, pvm_uint32 maxLength);

	virtual pvm_bool DeviceEnumModes(pvm_int32 nDeivce, TFormatEnumCallbackProc enumProc, void *param);

	virtual IPVMDeviceOutSimple* DeviceOpen(pvm_uint32 samplesPerSec, pvm_uint32 bitsPerSample, pvm_uint32 chanelsNum, pvm_int32 deviceNum, void *additionalInfo, pvm_uint32 infoSize, IPVMDeviceOutSimpleWaveSource *waveSource, pvm_bool deviceSuspended);

	virtual void CloseDevice(IPVMDeviceBase* device);
};

IPVMDriverOut* PVMDriverCreatePulse();
pvm_uint32 PVMDriverGetTypeAndFlagsPulse();

#endif

